package conservare.negocio;

import java.text.ParseException;
import java.util.List;

import conservare.boleto.LeitorDeArquivoRetorno;
import conservare.dao.BoletoRetornoDAO;
import conservare.modelo.boleto.BoletoEmitido;
import conservare.modelo.boleto.ArquivoRetorno;
import conservare.modelo.boleto.ArquivoRetornoDetalhe;

public class BoletoRetornoRN {

	private BoletoRetornoDAO dao;
	
	public BoletoRetornoRN(){
		this.dao = new BoletoRetornoDAO();
	}
	
	private ArquivoRetorno salvar(ArquivoRetorno boletoRetorno) {
		
		return dao.salvar(boletoRetorno);
		
	}

	public List<ArquivoRetornoDetalhe> obterBoletosRetornoDetalhesNaoProcessados(){
		
		return dao.obterBoletosRetornoDetalhesNaoProcessados();
		
	}
	
	
	public void executarBaixaArquivoRetorno(LeitorDeArquivoRetorno leitorDeArquivoRetorno) throws ParseException{
		
		ArquivoRetorno boletoRetorno = new ArquivoRetorno();
		boletoRetorno.setCnpjDaEmpresa(leitorDeArquivoRetorno.getHeaderCnpjEmpresa());
		boletoRetorno.setDataGeracaoArquivo(leitorDeArquivoRetorno.getHeaderDataGeracaoArquivo());
		boletoRetorno.setNomeDaEmpresa(leitorDeArquivoRetorno.getHeaderNomeDaEmpresa());
		boletoRetorno.setNomeDoBanco(leitorDeArquivoRetorno.getHeaderNomeDoBanco());
		boletoRetorno.setNumeroDoBanco(leitorDeArquivoRetorno.getHeaderNumeroDoBanco());
		boletoRetorno.setNumeroSeqRetornoArquivo(leitorDeArquivoRetorno.getHeaderNumeroSequencialRetorno());
		
		
		
		for(int index = 0; index < leitorDeArquivoRetorno.getQuatidadesDeLinhasDadosDoPagamento(); index++){
			
			ArquivoRetornoDetalhe boletoRetornoDetalhe = new ArquivoRetornoDetalhe();
			boletoRetornoDetalhe.setDataVencimentoDoTitulo(leitorDeArquivoRetorno.getPagamentoDetalheVencimentoDoTitulo(index));
			boletoRetornoDetalhe.setDataPagamentoDoTitulo(leitorDeArquivoRetorno.getPagamentoDetalheDataPagamentoDoTitulo(index));
			boletoRetornoDetalhe.setNossoNumero(leitorDeArquivoRetorno.getPagamentoDetalheNosoNumero(index));
			boletoRetornoDetalhe.setValorAbatimento(leitorDeArquivoRetorno.getPagamentoDetalheValorAbatimento(index));
			boletoRetornoDetalhe.setValorDesconto(leitorDeArquivoRetorno.getPagamentoDetalheValorDesconto(index));
			boletoRetornoDetalhe.setValorIOF(leitorDeArquivoRetorno.getPagamentoDetalheValorIOF(index));
			boletoRetornoDetalhe.setValorLiquidoCreditado(leitorDeArquivoRetorno.getPagamentoDetalheValorLiquidoCreditado(index));
			boletoRetornoDetalhe.setValorMultaJuros(leitorDeArquivoRetorno.getPagamentoDetalheValorMultaEJuros(index));
			boletoRetornoDetalhe.setValorPago(leitorDeArquivoRetorno.getPagamentoDetalheValorPago(index));
			
			//boletoRetornoDetalhe.setBoleto(localizarBoletoEmitido(leitorDeArquivoRetorno.getHeaderNumeroDoBanco(),leitorDeArquivoRetorno.getPagamentoDetalheNosoNumero(index)));
			
			boletoRetorno.adicionaBoletoRetornoDetalhe(boletoRetornoDetalhe);
		}
		
		salvar(boletoRetorno);
	}
	
	
	
	
	
	
	
	public BoletoEmitido localizarBoletoEmitido(String numeroDoBanco, String nossoNumero){
		
		return new BoletoEmitidoRN().obterBoletoPeloNossoNumero(numeroDoBanco, nossoNumero);
		
	}
	
}
